The notion of indexing a recorded program has recently become a popular concept with makers of personal video recorders (i.e. PVRs), also known as digital video recorders or “DVRs”. According to this concept, software executing on an author's entertainment system starts with a recorded program (for example a football game) and enables the author to make notes of key locations (also referred to as “indices”) within the program. So, for example, perhaps the author provides indices for the following events within the football game: all plays, all third down plays, all touchdowns, and exciting plays of interest. Typically these indices are defined in terms of some unit, such as offsets in seconds or milliseconds, from the start of the program.
Once the indices are defined and provided into an index file, the index file can be sent electronically to one or more different clients, also referred to as entertainment systems. So, for example, an author can index a program and then send the corresponding index file to their friends so that they can all enjoy the program as indexed by the author. When a client receives an index file containing the author's indices, if the client's user has recorded the same program, then the index file can be associated with, or otherwise attached to the recorded program's video content. When the user plays back the recorded program, an additional user interface can be presented which allows the user to skip to the key locations in the program, as defined by the author's indices.
While index files can provide great utility for their users insofar as personalizing recorded programs is concerned, receiving and processing index files can create problems that can, if left unaddressed, lead to errors that can impact the enjoyment and utility that can be derived from index files and their use.
For an illustration of but one problem that can lead to errors, consider FIG. 1 which illustrates an error that can arise when an author's program recording (here, user 1's program recording) starts slightly before the actual program is broadcast, and the index file recipient's program recording (here, user 2's program recording) starts slightly after the actual program is broadcast. Specifically, the box designated “Actual Program Timecode” depicts the actual timecode that is associated with the program that is broadcast. Notice the dashed line that extends downward from this box is designated “Actual Start” which designates the actual starting time of the broadcast. Notice, however, that user 1's program recording is actually started somewhat earlier than the actual broadcast—perhaps this recording picks up a previously-broadcast commercial. The portion of user 1's recording that is somewhat earlier than the actual program is designated by the cross-hatching. Notice also that user 2's program recording starts slightly after the actual start of the program.
If user 1 provides an index file having individual indices that are measured from a reference timecode that starts at the beginning of the physical recording (i.e. at User 1's Start), then the indices will be calculated to have an amount of time that is attributable to the crosshatched area of user 1's program recording. When user 1 sends their index file to user 2, assume that the reference timecode that is used is that which starts at the beginning of the recording. Since user 2 started their program recording somewhat later (perhaps 5 seconds after the actual beginning of the program broadcast), user 1's indices will be mapped to a different location of user 2's program recording. For purposes of example, individual indices are depicted by the small, downwardly-pointing arrows. Each index mapping from user 1's program recording to user 2's program recording is shown by the dashed arrow that extends therebetween.
Accordingly, the indices will not be synchronized and will point to locations in user 2's program recording that are incorrect. For example, if user 1 indexed a touchdown, user 2's corresponding index might point to the subsequent kickoff return.
There are other situations that can lead to errors as well. For example, the different stations or sources from which programs are broadcast can have hardware dissimilarities that can cause delays as between seemingly identical, but differently-broadcast programs. Errors can also be introduced by the system clocks of the devices that either index or attempt to use an index. For example, if a system's clock is not entirely accurate, errors can find their way into the index file. Additionally, the same program can be aired in different time slots and, within any one particular broadcast, there can be a delay that can lead to synchronization problems.
Accordingly, this invention arose out of concerns associated with providing improved methods and systems for enabling exchange and use of index files.